import pandas as pd

# # 4.1 对象与系数之间的运算
# # 一维对象 sr
# sr = pd.Series( [ 53, 64, 72 ] , index=['1 号', '2 号', '3 号'] )
# print(sr)
# sr += 10
# print(sr)
# sr *= 2
# print(sr)
# sr **= 2
# print(sr)
# # 二维对象
# v = [ [53, '女'], [64, '男'], [72, '男'] ]
# df = pd.DataFrame( v, index=[ '1 号', '2 号', '3 号' ], columns=[ '年龄', '性别' ] )
# print(df)
# df.iloc[:, 0] += 5
# print(df)
# df.loc[:, "年龄"] *= 2
# print(df)
# df["年龄"] **= 2
# print(df)


# 4.2 对象与对象之间的运算
# 对象做运算，必须保证其都是数字型对象，两个对象之间的维度可以不同。
# # （1）一维对象之间的运算
# # 创建 sr1
# v1 = [10, 20, 30, 40]
# k1 = [ '1 号', '2 号', '3 号', '4 号' ]
# sr1 = pd.Series( v1, index= k1 )
# # 创建 sr2
# v2 = [1, 2, 3 ]
# k2 = [ '1 号', '2 号', '3 号' ]
# sr2 = pd.Series( v2, index= k2 )
# print(sr1 + sr2)
# print(sr1 * sr2)
# print(sr1 / sr2)
# print(sr1 ** sr2)
# （2）二维对象之间的运算
# 设定 df1 和 df2
v1 = [ [10, '女'], [20, '男'], [30, '男'], [40, '女'] ]
v2 = [ 1, 2 ,3, 6 ]
i1 = [ '1 号', '2 号', '3 号', '4 号' ]; c1 = [ '年龄', '性别' ]
i2 = [ '1 号', '2 号', '3 号', '6 号' ]; c2 = [ '牌照' ]
df1 = pd.DataFrame( v1, index=i1, columns=c1 )
df2 = pd.DataFrame( v2, index=i2, columns=c2 )
print(f"df1\n{df1}\ndf2\n{df2}")
# 加法
df1.loc[:, "加法"] = df1.loc[:, "年龄"] + df2["牌照"]
# 减法、乘法、除法、幂方
df1['减法'] = df1['年龄'] - df2['牌照']
df1['乘法'] = df1['年龄'] * df2['牌照']
df1['除法'] = df1['年龄'] / df2['牌照']
df1['幂方'] = df1['年龄'] ** df2['牌照']
print(df1)
# ⚫ 使用 np.abs()、np.cos()、np.exp()、np.log() 等数学函数时，会保留索引；
# ⚫ Pandas 中仍然存在布尔型对象，用法与 NumPy 无异，会保留索引。
